Cloud computing typically involves using remote computing resources on a pay-per-use basis, where the remote computing resources may be used alone or in conjunction with internal computing resources of a “data center.” For example, processing resources and storage resources of a cloud provider, such as Amazon Web Services, Microsoft Azure, Go Grid or Rackspace Cloud Servers, can be requested and used on-demand in a scalable fashion. As such, cloud computing can be used for applications with varying or unpredictable demand like year-end financials or tax-return preparation. Additionally, computationally-intensive processing, such as Monte Carlo simulations or protein folding, can be performed using cloud computing resources.
Given the variation among products and services offered by cloud providers, it is often desirable to setup a project with computing resources sourced from various cloud providers and/or data centers. Additionally, it may be desirable to change the sourcing of the computing resources for a project as the products or services offered by a cloud provider or data center are updated. However, each cloud provider requires a different set of skills and credentials to provision (e.g., to define, make ready for use, setup, etc.), use and manage respective computing resources. Accordingly, it is difficult and time consuming to provision, use and manage computing resources across multiple cloud providers and/or data centers.
Additionally, conventional approaches to cloud computing limit sharing of resources between users. For example, most cloud providers limit each account to a single user identifier (e.g., an email address) and restrict the sharing of resources between multiple accounts. As such, it is typically difficult, insecure, or impossible to share computing resources among multiple users.
It is also difficult to monitor or track the usage of computing resources using conventional approaches to cloud computing. For example, each cloud provider reports back different types or amounts of usage data, and therefore, monitoring usage of computing resources across multiple cloud providers is difficult. The monitoring of usage data is made even more difficult where each account is limited to a single user and/or a single project, and therefore, multiple accounts exist to enable multiple users to access computing resources and/or to enable work on multiple projects. Further, where multiple users share one account to enable sharing of resources between the users, or where a single account is used for multiple projects, monitoring of usage data on a per-user basis or per-project basis is impossible since the cloud provider is unaware of the multiple users and/or multiple projects and only reports usage data for the single account as a whole.